<!DOCTYPE HTML PUBLIC "-//ORA//DTD CD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>[Chapter 23] 23.16 java.beans.PropertyEditor (JDK 1.1)</TITLE>
<META NAME="author" CONTENT="David Flanagan">
<META NAME="date" CONTENT="Thu Jul 31 16:18:39 1997">
<META NAME="form" CONTENT="html">
<META NAME="metadata" CONTENT="dublincore.0.1">
<META NAME="objecttype" CONTENT="book part">
<META NAME="otheragent" CONTENT="gmat dbtohtml">
<META NAME="publisher" CONTENT="O'Reilly &amp; Associates, Inc.">
<META NAME="source" CONTENT="SGML">
<META NAME="subject" CONTENT="Java">
<META NAME="title" CONTENT="Java in a Nutshell">
<META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript">
</HEAD>
<body vlink="#551a8b" alink="#ff0000" text="#000000" bgcolor="#FFFFFF" link="#0000ee">

<DIV CLASS=htmlnav>
<H1><a href='index.htm'><IMG SRC="gifs/smbanner.gif"
     ALT="Java in a Nutshell" border=0></a></H1>
<table width=515 border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=172 align=left valign=top><A HREF="ch23_15.htm"><IMG SRC="gifs/txtpreva.gif" ALT="Previous" border=0></A></td>
<td width=171 align=center valign=top><B><FONT FACE="ARIEL,HELVETICA,HELV,SANSERIF" SIZE="-1">Chapter 23<br>The java.beans Package</FONT></B></TD>
<td width=172 align=right valign=top><A HREF="ch23_17.htm"><IMG SRC="gifs/txtnexta.gif" ALT="Next" border=0></A></td>
</tr>
</table>

&nbsp;
<hr align=left width=515>
</DIV>
<DIV CLASS=sect1>
<h2 CLASS=sect1><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-16">23.16 java.beans.PropertyEditor (JDK 1.1)</A></h2>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-16.1"></A></h3>
</DIV>

<P CLASS=para>
The <tt CLASS=literal>PropertyEditor</tt> interface defines the methods
that must be implemented by a Java beans property editor
intended for use within an application builder or similar
tool.  <tt CLASS=literal>PropertyEditor</tt> is a complex interface because
it defines methods to support several different ways of
displaying property values to the user, and it also defines
methods to support several different ways of allowing the
user to edit the property value.

<P CLASS=para>
For a property of type <I CLASS=emphasis><tt CLASS=literal>x</tt></I>, the author of a Java bean
typically implements a property editor of class
<I CLASS=emphasis><tt CLASS=literal>x</tt></I><tt CLASS=literal>Editor</tt>.  While the editor is implemented by
the bean author, it is usually only instantiated or used
by application builders or similar tools (or by a
<tt CLASS=literal>Customizer</tt> class for a Bean).

<P CLASS=para>
In addition to implementing the <tt CLASS=literal>PropertyEditor</tt>
interface, a property editor must have a constructor that
expects no arguments, so that it can be easily instantiated by an application builder.  Also, it must
accept registration and deregistration of
<tt CLASS=literal>PropertyChangeListener</tt> objects, and it must send a
<tt CLASS=literal>PropertyChangeEvent</tt> to all registered listeners when
it changes the value of the property being edited.

<P CLASS=para>
The <tt CLASS=literal>PropertyEditorSupport</tt> class is a trivial
implementation of <tt CLASS=literal>PropertyEditor</tt>, suitable for
subclassing, or for supporting a list of
<tt CLASS=literal>PropertyChangeListener</tt> objects.

<DIV CLASS=screen>
<P>
<PRE>
public abstract interface <tt CLASS=literal>PropertyEditor</tt> {
    // <tt CLASS=literal>Public Instance Methods</tt>
            public abstract void <tt CLASS=literal>addPropertyChangeListener</tt>(PropertyChangeListener <tt CLASS=literal>listener</tt>);
            public abstract String <tt CLASS=literal>getAsText</tt>();
            public abstract Component <tt CLASS=literal>getCustomEditor</tt>();
            public abstract String <tt CLASS=literal>getJavaInitializationString</tt>();
            public abstract String[] <tt CLASS=literal>getTags</tt>();
            public abstract Object <tt CLASS=literal>getValue</tt>();
            public abstract boolean <tt CLASS=literal>isPaintable</tt>();
            public abstract void <tt CLASS=literal>paintValue</tt>(Graphics <tt CLASS=literal>gfx</tt>, Rectangle <tt CLASS=literal>box</tt>);
            public abstract void <tt CLASS=literal>removePropertyChangeListener</tt>(PropertyChangeListener <tt CLASS=literal>listener</tt>);
            public abstract void <tt CLASS=literal>setAsText</tt>(String <tt CLASS=literal>text</tt>) throws IllegalArgumentException;
            public abstract void <tt CLASS=literal>setValue</tt>(Object <tt CLASS=literal>value</tt>);
            public abstract boolean <tt CLASS=literal>supportsCustomEditor</tt>();
}
</PRE>
</DIV>

</DIV>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-16.2">Implemented By:</A></h3>

<P CLASS=para>
PropertyEditorSupport

</DIV>

<DIV CLASS=sect2>
<h3 CLASS=sect2><A CLASS="TITLE" NAME="JNUT2-CH-23-SECT-16.3">Returned By:</A></h3>

<P CLASS=para>
PropertyEditorManager.findEditor()

</DIV>

</DIV>


<DIV CLASS=htmlnav>

<P>
<HR align=left width=515>
<table width=515 border=0 cellpadding=0 cellspacing=0>
<tr>
<td width=172 align=left valign=top><A HREF="ch23_15.htm"><IMG SRC="gifs/txtpreva.gif" ALT="Previous" border=0></A></td>
<td width=171 align=center valign=top><a href="index.htm"><img src='gifs/txthome.gif' border=0 alt='Home'></a></td>
<td width=172 align=right valign=top><A HREF="ch23_17.htm"><IMG SRC="gifs/txtnexta.gif" ALT="Next" border=0></A></td>
</tr>
<tr>
<td width=172 align=left valign=top>java.beans.PropertyDescriptor (JDK 1.1)</td>
<td width=171 align=center valign=top><a href="index/idx_0.htm"><img src='gifs/index.gif' alt='Book Index' border=0></a></td>
<td width=172 align=right valign=top>java.beans.PropertyEditorManager (JDK 1.1)</td>
</tr>
</table>
<hr align=left width=515>

<IMG SRC="gifs/smnavbar.gif" USEMAP="#map" BORDER=0> 
<MAP NAME="map"> 
<AREA SHAPE=RECT COORDS="0,0,108,15" HREF="../javanut/index.htm"
alt="Java in a Nutshell"> 
<AREA SHAPE=RECT COORDS="109,0,200,15" HREF="../langref/index.htm" 
alt="Java Language Reference"> 
<AREA SHAPE=RECT COORDS="203,0,290,15" HREF="../awt/index.htm" 
alt="Java AWT"> 
<AREA SHAPE=RECT COORDS="291,0,419,15" HREF="../fclass/index.htm" 
alt="Java Fundamental Classes"> 
<AREA SHAPE=RECT COORDS="421,0,514,15" HREF="../exp/index.htm" 
alt="Exploring Java"> 
</MAP>
</DIV>

</BODY>
</HTML>
